package aplicacion.modelo;
import java.util.ArrayList;
import java.util.Iterator;

public class CeldasVecinas {
	private ArrayList<Celda> celdasVecinas;
	
	public CeldasVecinas(){
		celdasVecinas=new ArrayList<Celda>();
	}
	
	public void add(Celda celda) {
		celdasVecinas.add(celda);
	}
	
	public Celda get(int indice){
		if(this.indiceFueraDeRango(indice))
			throw new IllegalArgumentException();
		return celdasVecinas.get(indice);
	}
	
	private boolean indiceFueraDeRango(int indice) {
		if(indice>this.size())
			return true;
		return false;
	}
	
	public int size(){
		return celdasVecinas.size();
	}

	public boolean contieneA(Celda celda){
		Iterator<Celda> iterador=this.iterator();
		while(iterador.hasNext()){
			if(celda.compararCon(iterador.next()))
				return true;
		}
		return false;
	}
	
	public Iterator<Celda> iterator(){
		return new IteradorCeldasVecinas<Celda>();
	}
	
	private class IteradorCeldasVecinas<celda> implements Iterator<Celda>{
		int posicion;
		
		public IteradorCeldasVecinas(){
			posicion=-1;
		}
		@Override
		public boolean hasNext() {
			if((posicion>=(celdasVecinas.size()-1))||(celdasVecinas.isEmpty()))
				return false;
			return true;
		}

		@Override
		public Celda next() {
			posicion++;
			Celda celda = celdasVecinas.get(posicion);
			return celda;
		}

		@Override
		public void remove() {
			celdasVecinas.remove(posicion);
			
		}
		
	}


}
